#include "io.h"

#define COM1    0x3f8

void uart_8250_init(void)
{
    outb(COM1+2, 0);
    outb(COM1+3, 0x80);
    outb(COM1+0, 115200/9600);
    outb(COM1+1, 0);
    outb(COM1+3, 0x03);
    outb(COM1+4, 0);
    //outb(COM1+1, 0x01);    // 使能接受中断.

    // 没有检测到串口.
    if(inb(COM1+5) == 0xFF)
        return;

    // 清中断状态
    inb(COM1+2);
    inb(COM1+0);
}

void uart_8250_putc(char c)
{
    while(!(inb(COM1+5) & 0x20));
    outb(COM1+0, c);
}

void uart_8250_puts(char *msg)
{
    char c;

    if (!msg) return;

    while ((c = *msg) != '\0') {
        uart_8250_putc(c);
        msg++;
    }
}